/***************************************************************************************************
  *Copyright(C),2010-2017,Sumscope
  *FileName	:  pinyin_search_buffer.h
  *Author	:  scofined.qi
  *Version	:  1.0
  *Date		:  2017/06/05
  *Desc		:  //用于主要说明此程序文件完成的主要功能
  *Relation :
  *Others	:  //其他内容说明
  *Function :  //主要函数列表，每条记录应包含函数名及功能简要说明
  *History	:  //修改历史记录列表，每条修改记录应包含修改日期、修改者及修改内容简介
  ***************************************************************************************************/
#pragma once

#include "../pinyin_search.h"

namespace qb{
	namespace base{
		class StringPage;

		namespace internal{
			class BondChangeBuffer{
			public:
				struct ChangeItem{
					int			id;		// index in AfxGetBondContainer
					kChangeType	type;	// 
					int			oldlen, nowlen;
					const char*	old;	// 旧值
					const char*	now;	// 新值
				};
			protected:
                std::vector<ChangeItem>	m_items;
                qb::base::StringPage*	m_page;
			public:
				BondChangeBuffer();
				~BondChangeBuffer();
				void Reset();
				void Reserve(int ncount);
				void AddChange(int id, kChangeType type, const char* oldName, int oldLen, const char* name, int len);
				void AddNameChange(int id, const char* oldName, int oldLen, const char* name,int len);
				void AddNameEnChange(int id, const char* oldName, int oldLen, const char* name, int len);
				void AddCodeChange(int id, const char* oldCode, int oldLen, const char* code, int len);
				int GetCount()const{ return m_items.size(); }
				int GetChange(int index, kChangeType& type, const char*& old, const char*& now)const;
				const ChangeItem& GetChangeItem(int index)const;
			};


		}
	}
}
